

// module.exports = grunt => {

//   // 注册任务，第一个参数为任务名字，运行命令为yarn grunt foo
//   // yarn会查找node-modules中提供的命令
//   grunt.registerTask('foo', () => {
//     console.log('hello grunt~');
//   })

//   // 第二个参数如果是字符串时，则为任务描写；可以通过 yarn grunt --help 查看
//   grunt.registerTask('bar', "任务描述", () => {
//     console.log('bar task~');
//   });

//   // grunt.registerTask('default', () => {
//   //   console.log('default grunt~');
//   // })

//   grunt.registerTask('bad', () => {
//     console.log('bad working~');
//     return false; // 标记任务失败
//   });

//   // 默认函数 直接执行yarn grunt就可以了，可以接收一个任务数组，
//   // 执行默认任务时，grunt会依次执行任务数组中的任务
//   grunt.registerTask('default', ['foo', 'bad', 'bar']);

//   // grunt 代码默认支持同步函数
//   // 异步任务 不能用箭头函数
//   grunt.registerTask('async-task',function () {
//     const done = this.async(); // 标识异步任务
//     setTimeout(() => {
//       console.log('async task wroking~');
//       // done(); // 标识异步任务完成
//       done(false); // 标识异步任务失败
//     }, 1000);
//   })
// }


// // 配置选项方法initConfig
// module.exports = grunt => {
//   grunt.initConfig({
//     foo: "foo func", // 对象的键保持跟任务名称一致
//     bar: {
//       kk: 123
//     }
//   })

//   grunt.registerTask('foo', () => {
//     console.log(grunt.config('foo'));
//   })

//   grunt.registerTask('bar', () => {
//     console.log(grunt.config('bar'));
//     console.log(grunt.config('bar.kk')); // 支持点方式
//   });
// }


// // registerMultiTask
// module.exports = grunt => {
//   grunt.initConfig({
//     build: {
//       // 对象当中每个属性的名称就是我们的目标名称 (除options外)
//       options: {
//         foo: 'bar'
//       },
//       css: {
//         options: {
//           foo: 'baz'
//         }
//       },
//       js: 2
//     }
//   })

//   // 多目标模式，可以让任务根据配置形成多个子任务
//   // 不要用箭头函数
//   grunt.registerMultiTask('build', function () {
//     console.log(this.options());
//     console.log(`target:${this.target}, data: ${this.data}`);
//   })
// }

// grunt插件的命名规范：grunt-contrib-<taskname>
// module.exports = grunt => {
//   grunt.initConfig({
//     // clean: {
//     //   temp: 'temp/index.js'
//     // }
//     clean: {
//       temp: 'temp/*'
//   }
//   })
  
//   // grunt插件的命名规范：grunt-contrib-<taskname>
//   // 所以这个插件的名称为clean
//   grunt.loadNpmTasks('grunt-contrib-clean')
// }


const sass = require('sass');
const loadGruntTasks = require('load-grunt-tasks');

module.exports = grunt => {
  grunt.initConfig({
    sass: {
      options: {
        sourceMap: true,
        implementation: sass
        },
        main: {
            files: {
                'dist/css/main.css': 'src/scss/main.scss'  //键为目标路径，值为源文件路径
            }
        }
    },
    // 使用babel编译es6的语法
    babel: {
      options: {
        sourceMap: true,
        presets: ["@babel/preset-env"] // 作用：加载全部最新的ECMAScript的特性
      },
      main: {
        files: {
          "dist/js/app.js":"src/js/app.js"
        }
      }
    },
    watch: {
      js: {
        files: ['src/js/*.js'],
        tasks: ['babel']
      },
      css: {
        files: ['src/scss/*.scss'],
        tasks: ['sass']
      }
    }
  })

  // grunt.loadNpmTasks('grunt-sass')
  loadGruntTasks(grunt);
  grunt.registerTask('default',['sass','babel','watch'])
}